<?php

namespace app\api\util;

use DateTime;

class Date
{
    /**
     * 将给定的时间戳转换为相对当前时间的描述
     * @param $timestamp
     * @return string
     */
    public static function timeAgo($timestamp): string
    {
        if (empty($timestamp)) {
            return '';
        }
        $currentTimeStamp = time();
        $diffInSeconds = $currentTimeStamp - $timestamp; // 计算时间差（秒）

        // 转换秒数为更易于理解的单位
        $diffInMinutes = floor($diffInSeconds / 60);
        $diffInHours = floor($diffInMinutes / 60);
        $diffInDays = floor($diffInHours / 24);

        // 设置一个阈值，当差异小于这个值时返回“刚刚”
        $justNowThreshold = 60; // 1分钟（60秒）

        if ($diffInDays > 0) {
            return $diffInDays . '天前';
        } elseif ($diffInHours > 0) {
            return $diffInHours . '小时前';
        } elseif ($diffInMinutes > 0) {
            return $diffInMinutes . '分钟前';
        } elseif ($diffInSeconds < $justNowThreshold) {
            return '刚刚';
        } else {
            return $diffInSeconds . '秒前';
        }
    }

    /**
     * 判断指定时间是否小于当前时间
     * @param string $dateTimeStr 指定的时间字符串，格式为 'Y-m-d H:i:s'
     * @return bool 如果指定时间小于当前时间，返回true；否则返回false
     * @throws \Exception
     */
    public static function isTimeLessThanNow($dateTimeStr): bool
    {
        $dateTime = new DateTime($dateTimeStr);
        $now = new DateTime();

        return $dateTime < $now;
    }


}